import {
  Entity,
  Column,
  PrimaryGeneratedColumn,
  CreateDateColumn,
  UpdateDateColumn,
} from 'typeorm';

@Entity('tb_user') // 定义表名为 tb_user
export class User {
  // 主键，使用自增数字生成，替代 UUID
  @PrimaryGeneratedColumn()
  id: number;

  // 用户名，字符串类型，非空
  @Column({ nullable: false, unique: true })
  username: string;

  // 用户邮箱，字符串类型，非空且唯一
  @Column({ nullable: false, unique: true })
  email: string;

  // 用户密码，字符串类型，非空
  @Column({ nullable: false })
  password: string;

  // 密码加盐值
  @Column({ type: 'varchar', length: 128, nullable: true })
  salt: string;

  // 是否激活用户，布尔值，默认为 true
  @Column({ nullable: true, default: true })
  isActive: boolean;

  // 最后登录时间
  @Column({ type: 'timestamp', nullable: true })
  lastLogin: Date;

  // 登录失败次数
  @Column({ type: 'int', default: 0 })
  failedLoginAttempts: number;

  // 角色 ID，存储关联的角色 ID
  @Column({ type: 'varchar', length: 36, nullable: true })
  roleId: string;

  // 子系统 ID，存储关联的子系统 ID
  @Column({ type: 'varchar', length: 36, nullable: true })
  subsystemId: string;

  // 用户创建时间，自动维护
  @CreateDateColumn()
  createDate: Date;

  // 用户更新时间，自动维护
  @UpdateDateColumn()
  updateDate: Date;
}
